package cn.com.haopy.yue.ai.db.utils;

import org.springframework.util.StringUtils;

import java.util.regex.Pattern;

/**
 * @author keel
 * @date 2023/12/15
 */
public class SqlInjectionExtUtils {
    /**
     * SQL注入盲注过滤正则
     */
    private static final Pattern SQL_SYNTAX_PATTERN = Pattern.compile("(if|length|substr|substring|ascii|ord|sleep)\\s*.*\\(\\s*.*\\w+\\s*.*\\)", Pattern.CASE_INSENSITIVE);

    /**
     * 检查参数是否存在 SQL 注入
     *
     * @param value 检查参数
     * @return true 非法 false 合法
     */
    public static boolean check(String value) {
        if (!StringUtils.hasText(value)) {
            return false;
        }

        //检查是否包含SQL注入敏感字符
        return SQL_SYNTAX_PATTERN.matcher(value).find();
    }
}
